From d41ae98e9b807b73f47ba318a8d7ed90df71b38a Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 17 Oct 2004 06:38:35 +0000 Subject: [PATCH] Destroy secondary dialogs if the main dialog is hidden. (#155084, Paolo 2004-10-17 Matthias Clasen * gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary dialogs if the main dialog is hidden. (#155084, Paolo Borelli) --- ChangeLog | 5 +++++ ChangeLog.pre-2-10 | 5 +++++ ChangeLog.pre-2-6 | 5 +++++ ChangeLog.pre-2-8 | 5 +++++ gtk/gtkaboutdialog.c | 45 ++++++++++++++++++++++---------------------- 5 files changed, 42 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index 338f7391f0..da193c8a19 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-10-17 Matthias Clasen + + * gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary + dialogs if the main dialog is hidden. (#155084, Paolo Borelli) + 2004-10-16 Matthias Clasen * gtk/gtkaboutdialog.c (gtk_about_dialog_destroy): Don't leak diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 338f7391f0..da193c8a19 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +2004-10-17 Matthias Clasen + + * gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary + dialogs if the main dialog is hidden. (#155084, Paolo Borelli) + 2004-10-16 Matthias Clasen * gtk/gtkaboutdialog.c (gtk_about_dialog_destroy): Don't leak diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 338f7391f0..da193c8a19 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,8 @@ +2004-10-17 Matthias Clasen + + * gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary + dialogs if the main dialog is hidden. (#155084, Paolo Borelli) + 2004-10-16 Matthias Clasen * gtk/gtkaboutdialog.c (gtk_about_dialog_destroy): Don't leak diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 338f7391f0..da193c8a19 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,8 @@ +2004-10-17 Matthias Clasen + + * gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary + dialogs if the main dialog is hidden. (#155084, Paolo Borelli) + 2004-10-16 Matthias Clasen * gtk/gtkaboutdialog.c (gtk_about_dialog_destroy): Don't leak diff --git a/gtk/gtkaboutdialog.c b/gtk/gtkaboutdialog.c index 12037e0937..b345c640cd 100644 --- a/gtk/gtkaboutdialog.c +++ b/gtk/gtkaboutdialog.c @@ -114,7 +114,6 @@ static void gtk_about_dialog_set_property (GObject guint prop_id, const GValue *value, GParamSpec *pspec); -static void gtk_about_dialog_destroy (GtkObject *object); static void update_name_version (GtkAboutDialog *about); static GtkIconSet * icon_set_new_from_pixbufs (GList *pixbufs); static void activate_url (GtkWidget *widget, @@ -180,7 +179,6 @@ gtk_about_dialog_class_init (GtkAboutDialogClass *klass) object_class->get_property = gtk_about_dialog_get_property; object_class->finalize = gtk_about_dialog_finalize; - ((GtkObjectClass *)klass)->destroy = gtk_about_dialog_destroy; g_object_class_install_property (object_class, PROP_NAME, @@ -404,26 +402,6 @@ gtk_about_dialog_finalize (GObject *object) G_OBJECT_CLASS (gtk_about_dialog_parent_class)->finalize (object); } -static void -gtk_about_dialog_destroy (GtkObject *object) -{ - GtkAboutDialog *about = GTK_ABOUT_DIALOG (object); - GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data; - - if (priv->credits_dialog) - { - gtk_widget_destroy (priv->credits_dialog); - priv->credits_dialog = NULL; - } - if (priv->license_dialog) - { - gtk_widget_destroy (priv->license_dialog); - priv->license_dialog = NULL; - } - - GTK_OBJECT_CLASS (gtk_about_dialog_parent_class)->destroy (object); -} - static void gtk_about_dialog_set_property (GObject *object, guint prop_id, @@ -1786,6 +1764,27 @@ display_license_dialog (GtkWidget *button, gtk_widget_show_all (dialog); } +static void +close_cb (GtkAboutDialog *about) +{ + GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data; + + if (priv->license_dialog != NULL) + { + gtk_widget_destroy (priv->license_dialog); + priv->license_dialog = NULL; + } + + if (priv->credits_dialog != NULL) + { + gtk_widget_destroy (priv->credits_dialog); + priv->credits_dialog = NULL; + } + + gtk_widget_hide (GTK_WIDGET (about)); + +} + /** * gtk_about_dialog_new: * @@ -1807,7 +1806,7 @@ gtk_about_dialog_new (void) /* Close dialog on user response */ g_signal_connect (G_OBJECT (dialog), "response", - G_CALLBACK (gtk_widget_hide), + G_CALLBACK (close_cb), NULL); return GTK_WIDGET (dialog); -- 2.30.2